package com.fi.common.service;


import com.fi.common.domain.IRecognAccessInfo;
import com.fi.common.domain.vo.FileData;
import com.fi.common.domain.vo.FileDataExcel;
import com.fi.common.domain.vo.FileDataHtml;
import com.fi.common.domain.vo.FileDataWord;
import com.fi.recogn.dto.RecognReq;

import java.io.FileNotFoundException;
import java.io.InputStream;

/**
 * @desc TODO 获取文件流
 *
 * @author lujiahong
 * @date 2024/08/12 14:40
 */
@SuppressWarnings("all")
public interface OssService {

    /**
     * @desc TODO 判断oss文件是否存在
     *
     * @param path 公告文件路径
     * @return boolean
     * @author lujiahong
     * @date 2024/08/12 14:53
     */
    boolean isExist(String path);

    /**
     * 往阿里云OSS上传一个文件，oss详情参阅：https://help.aliyun.com/product/31815.html?spm=a2c4g.11186623.6.540.e45263287O4vS6
     *
     * @param filePath 文件路径
     * @param input    文件流
     */
    String upload(String filePath, InputStream input);

    /**
     * @desc TODO 获取公告文件对应文件大小
     *
     * @param accessoryUrl 公告附件url
     * @return java.io.InputStream
     * @author lujiahong
     * @date 2024/08/12 14:53
     */
    long getFileSize(String accessoryUrl);

    /**
     * @desc TODO 获取公告文件对应文件流
     *
     * @param accessoryUrl 公告附件url
     * @return java.io.InputStream
     * @author lujiahong
     * @date 2024/08/12 14:53
     */
    InputStream getFileInputStream(String accessoryUrl);

    /**
     * @desc TODO 获取对应公告 的 oss路径的 正文等相关数据
     *
     * @param accessId 公共id
     * @param ossPath oss路径
     * @return com.fi.common.domain.vo.FileData
     * @author lujiahong
     * @date 2024/08/12 14:54
     */
    FileData getOssFileContent(Long accessId, String ossPath) throws FileNotFoundException;

    /**
     * @desc TODO 解析文件
     *
     * @param info 公告核心信息
     * @return java.io.InputStream
     * @author lujiahong
     * @date 2024/08/12 14:48
     */
    <T extends FileData> T parseCommon(RecognReq req);

    /**
     * @desc TODO 解析word文件
     *
     * @param data 公告核心信息
     * @author lujiahong
     * @date 2024/08/12 14:48
     */
    <T extends FileData> T parseWordFile(FileDataWord data);

    /**
     * @desc TODO 解析excel文件
     *
     * @param data 公告核心信息
     * @author lujiahong
     * @date 2024/08/12 14:48
     */
    <T extends FileData> T parseExcelFile(FileDataExcel data);

    /**
     * @desc TODO 解析html文件
     *
     * @param data 公告核心信息
     * @author lujiahong
     * @date 2024/08/12 14:48
     */
    <T extends FileData> T parseHtmlFile(FileDataHtml data);
}
